package com.linrung.gdsfrz.electronicseal;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.List;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import com.linrung.core.model.ResultData;

/**
 * 电子签章API接口
 * @author wurenlong
 */
public interface IElectronicSealAPIService {

    /**
     * <h1>文件上传(云)</h1>
     * @param pdfFile
     * @param fileName
     * @return ResultData<Object>
     */
    ResultData<JSONObject> uploadSignedFile(File pdfFile, String fileName, String userId) throws FileNotFoundException;

    /**
     * <h1>文件上传(云)</h1>
     * @param realPath 项目绝对路径
     * @param filePath 文件相对路径
     * @return ResultData<Object>
     */
    ResultData<JSONObject> uploadSignedFile(String realPath, String filePath, String fileName, String userId) throws FileNotFoundException;

    /**
     * <h1>获取印章信息（用户标识）</h1>
     * @param userId 用户ID
     * @return ResultData<Object>
     */
    ResultData<JSONArray> listImageByUserId(String userId);

    /**
     * <h1>已签章文件下载</h1>
     * @param siteId 网站ID由电子印章厂家提供
     * @param fileId 已签章文件唯一标识
     * @param realPath 存储文件根目录绝对路径
     * @param savePath 存储文件相对路径
     * @return ResultData<Object>
     */
    ResultData<Object> downloadSignedFileByFileId(String siteId, String fileId, String realPath, String savePath);

    /**
     * 按文件编号验签
     * @param documentId 文件唯一标识
     * @return 签章信息
     */
    ResultData<JSONArray> verifyByDocumentId(String documentId, String userId);


    /**
     * 按关键字签章
     * @param documentName 文件名称
     * @param documentPath 文件系统地址的相对路径
     * @param siteId 分配各个业务系统的id
     * @param outUserId 用章人Id。
     * @param title 最长100 为文档设置的标题。对接业务系统可通过该参数为每个文档设置不同的标题，以便后续对文档进行检索。
     * @param signatoriesList 多个签章信息
     * @return 签章文件ID
     */
    ResultData<JSONArray> dynamicSignByCode(String documentName, String documentPath, String siteId, String outUserId, String title, JSONArray signatoriesList);

}
